


// int size = 0;
// long long ret = 0;
// long long t = 1e9+7;
// void fun(vector<int>& nums,vector<int>& tmp ,vector<bool>& tt)
// {
//     if(tmp.size() == nums.size()){
//         ret++; ret%=(t);    
//         // for(auto e : tmp){
//         //     cout<<e<<' ';
//         // }
//         // cout<<endl;
//         return;
//     }
//     for(int i = 0;i<::size;i++){
//         if(tt[i] == false && (tmp.size() == 0 || tmp[tmp.size()-1]%nums[i] == 0 || nums[i]%tmp[tmp.size()-1] == 0)){
//             tmp.push_back(nums[i]);
//             tt[i] = true;
//             fun(nums,tmp,tt);
//             tt[i] = false;
//             tmp.pop_back();
//         }   
//     }
// }
// class Solution {
// public:
    
//     int specialPerm(vector<int>& nums) {
//         ::size = nums.size();
//         vector<int> tmp;
//         vector<bool> tt(::size,false);
//         ret = 0;
//         sort(nums.begin(),nums.end());    
//         fun(nums,tmp,tt);
//         return ret;
//     }
// };